package cc.rengu.igas.route.core.realize.payment;

import cc.rengu.igas.route.facade.request.IntelligencePaymentRequest;
import cc.rengu.igas.route.facade.request.IntelligencePaymentVerifyRequest;
import cc.rengu.igas.route.facade.request.IntelligenceResultQueryRequest;
import cc.rengu.igas.route.facade.response.IntelligencePaymentResponse;
import cc.rengu.igas.route.facade.response.IntelligencePaymentVerifyResponse;
import cc.rengu.igas.route.facade.response.IntelligenceResultQueryResponse;

/**
 * 对外收款通道实现接口
 *
 * @author xlz
 * @version 1.0
 * @date 2020430
 */
public interface DstChannelPaymentService {

    /**
     * 对外收款
     *
     * @param intelligencePaymentRequest 代收请求
     * @return IntelligencePaymentResponse
     * @throws Exception 调用异常
     * @author xionglz
     * @date 2020-04-30
     */
    IntelligencePaymentResponse payment(IntelligencePaymentRequest intelligencePaymentRequest) throws Exception;

    /**
     * 对外收款确认
     *
     * @param intelligencePaymentVerifyRequest 代收确认请求
     * @return IntelligencePaymentVerifyResponse
     * @throws Exception 调用异常
     * @author xionglz
     * @date 2020-04-30
     */
    IntelligencePaymentVerifyResponse paymentVerify(IntelligencePaymentVerifyRequest intelligencePaymentVerifyRequest) throws Exception;


    /**
     * 代收状态查询
     *
     * @param resultQueryRequest
     * @return
     */
    IntelligenceResultQueryResponse query(IntelligenceResultQueryRequest resultQueryRequest) throws Exception;

    /**
     * 获取对账key
     *
     * @param intelligencePaymentRequest 代收请求
     * @return 返回对账key
     * @throws Exception 失败抛出异常
     */
    String getReconKey(IntelligencePaymentRequest intelligencePaymentRequest) throws Exception;
}
